package droidninja.filepicker.utils;

import android.content.Context;
import android.text.TextUtils;

import java.io.File;

import top.zibin.luban.CompressionPredicate;
import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener;

/**
 * <p>Title: LubanUtils </p>
 * <p>Description:  </p>
 * <p>Company: www.mapuni.com </p>
 *
 * @author : 蔡俊峰
 * @version : 1.0
 * @date : 2023/3/6 16:57
 */
public class LubanUtils {

    public static void launch(Context context, String filePath, int size, String targetDir) {
        Luban.with(context)  //context
                .load(filePath)  // 需要压缩的图片file
                .ignoreBy(size)   //压缩率 ，默认100
                .setTargetDir(targetDir)  //压缩后文件目录
                .filter(new CompressionPredicate() {
                    @Override
                    public boolean apply(String path) {
                        return !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif"));
                    }
                })
                .setCompressListener(new OnCompressListener() {
                    @Override
                    public void onStart() {
                        // TODO 压缩开始前调用，可以在方法内启动 loading UI
                    }

                    @Override
                    public void onSuccess(File file) {
                        // TODO 压缩成功后调用，返回压缩后的图片文件
                        //如果希望替换原图可以执行这行
                        file.renameTo(new File(filePath));
                    }

                    @Override
                    public void onError(Throwable e) {
                        // TODO 当压缩过程出现问题时调用
                    }
                }).launch();
    }
}
